

//给你一个下标从 0 开始的整数数组 nums ，同时给你一个整数 key ，它在 nums 出现过。 
//
// 统计 在 nums 数组中紧跟着 key 后面出现的不同整数 target 的出现次数。换言之，target 的出现次数为满足以下条件的 i 的数目： 
//
// 
// 0 <= i <= n - 2 
// nums[i] == key 且 
// nums[i + 1] == target 。 
// 
//
// 请你返回出现 最多 次数的 target 。测试数据保证出现次数最多的 target 是唯一的。 
//
// 
//
// 示例 1： 
//
// 输入：nums = [1,100,200,1,100], key = 1
//输出：100
//解释：对于 target = 100 ，在下标 1 和 4 处出现过 2 次，且都紧跟着 key 。
//没有其他整数在 key 后面紧跟着出现，所以我们返回 100 。
// 
//
// 示例 2： 
//
// 输入：nums = [2,2,2,2,3], key = 2
//输出：2
//解释：对于 target = 2 ，在下标 1 ，2 和 3 处出现过 3 次，且都紧跟着 key 。
//对于 target = 3 ，在下标 4 出出现过 1 次，且紧跟着 key 。
//target = 2 是紧跟着 key 之后出现次数最多的数字，所以我们返回 2 。
// 
//
// 
//
// 提示： 
//
// 
// 2 <= nums.length <= 1000 
// 1 <= nums[i] <= 1000 
// 测试数据保证答案是唯一的。 
// 
// 👍 2 👎 0


package cn.db117.leetcode.solution21;

/**
 * 2190.数组中紧跟 key 之后出现最频繁的数字.most-frequent-number-following-key-in-an-array
 *
 * @author db117
 * @since 2022-03-07 11:14:58
 **/

public class Solution_2190 {
    public static void main(String[] args) {
        Solution solution = new Solution_2190().new Solution();
        System.out.println(solution.mostFrequent(new int[]{1, 100, 200, 1, 100}, 1));
        System.out.println(solution.mostFrequent(new int[]{2, 2, 2, 2, 3}, 2));
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int mostFrequent(int[] nums, int key) {
            int[] count = new int[1001];
            int max = 0;
            // 统计最大值
            for (int i = 0; i < nums.length - 1; i++) {
                if (nums[i] == key) {
                    count[nums[i + 1]]++;
                    max = Math.max(max, count[nums[i + 1]]);
                }
            }

            // 找最大值
            for (int i = 0; i < count.length; i++) {
                if (count[i] == max) {
                    return i;
                }
            }
            return -1;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}